﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLayer.Interfaces;
using BusinessLayer.Implementacion;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;
using DevExpress.Web.ASPxPopupControl;
using EntityLayer;
using System.IO;
using System.Threading;
using System.Windows.Forms;
using System.Data;
using pryTransfinter.Reportes;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.Sql;
namespace pryTransfinter.Transaciones
{
    public partial class wfrmCoordinarTransferencia : System.Web.UI.Page
    {
        IFacadeSolicitarTrasnferencia blSolicitarTransferencia;
        IFacadeGestionarTransferencia blGestionarTransferencia;
        IFacadeActualizarTransferencia blActualizarTransferencia;
        private static String strMsg, strTitulo,operacion;
        private static ASPxPopupControl strPopup;
        private static ASPxLabel strLabel;
        private static bool estado;

        //WebService.WebService servicio = new WebService.WebService();
        protected void Page_Load(object sender, EventArgs e)
        {
            //servicio.GetCountries();
            if (!IsPostBack)
            {
                estado = true;
            }
         
            if (!IsPostBack)
            {
                this.cargarGrillaResponsable();
                //this.cargarComboResponsable();
                this.cargarGrillaNroOperaciones();
                this.cargarComboOperador();
                this.cargarComboOperadorConsultar();
                //Cargar Controles Tab Generar
                this.cargarGrillaNroOperacionesGenerar();
                this.cargarComboOperadorGenerar();
                this.cargarGrillaResponsableGenerar();
                this.cargarGrillaClienteCuenta();
                this.cargarComboSupervisor();
            }
            string adc = txtCliente.Text == string.Empty ? "" : txtCliente.Text;
           
            this.cargarComboResponsable();
            this.cargarComboCuentaBenef(adc);
        }

        void cargarComboSupervisor()
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            try
            {
                cboSupervisorCon.DataSource = blGestionarTransferencia.listar();
                cboSupervisorCon.ValueField = "matriculaSupervisor";
                cboSupervisorCon.TextField = "nomSupervisor";
                cboSupervisorCon.DataBind();
                cboSupervisorCon.Items.Insert(0, new ListEditItem("Todos", "TODO"));
                cboSupervisorCon.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                this.MostrarComentario(popupOK, lblmensOk, ex.Message);
                
            }
          
        }
        void cargarGrillaResponsable()
        {
            blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            
            try
            {
                grdPrincipal.DataSource = blSolicitarTransferencia.listarTransaccionesIngresadas();
                grdPrincipal.DataBind();
            }
            catch (Exception ex)
            {
                this.MostrarComentario(popupOK, lblmensOk, ex.Message);
            }
        }

        void cargarGrillaResponsableGenerar()
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            try
            {
                grdResponsableG.DataSource = blGestionarTransferencia.listarResponsableCoordinador();
                grdResponsableG.DataBind();
            }
            catch (Exception ex)
            {
                this.MostrarComentario(popupOK, lblmensOk, ex.Message);
            }
        }
      
        void cargarComboOperador()
        {
            try
            {
                blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();

                cboAsignarOperador.DataSource = blGestionarTransferencia.listarOperador();
                cboAsignarOperador.ValueField = "matriculaOperador";
                cboAsignarOperador.TextField = "nomOperador";
                cboAsignarOperador.DataBindItems();
                cboAsignarOperador.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                this.MostrarComentario(popupOK, lblmensOk, ex.Message);
            }
        }
        void cargarComboOperadorConsultar()
        {
            try
            {
                blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();

                cboResonsableCon.DataSource = blGestionarTransferencia.listarOperador();
                cboResonsableCon.ValueField = "matriculaOperador";
                cboResonsableCon.TextField = "nomOperador";
                cboResonsableCon.DataBindItems();
                cboResonsableCon.Items.Insert(0, new ListEditItem("Todos", "TODO"));
                cboResonsableCon.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                this.MostrarComentario(popupOK, lblmensOk, ex.Message);
            }
        }
        void cargarComboOperadorGenerar()
        {
            try
            {
                blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
                cboResponsableG.ValueField = "matriculaOperador";
                cboResponsableG.TextField = "nomOperador";
                cboResponsableG.DataSource = blGestionarTransferencia.listarOperador();
                cboResponsableG.DataBindItems();
                cboResponsableG.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                this.MostrarComentario(popupOK, lblmensOk, ex.Message);
            }
        }
        void cargarGrillaNroOperaciones()
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            try
            {
                grdResponsable.DataSource = blGestionarTransferencia.listarResponsableNro();
                grdResponsable.DataBind();
            }
            catch (Exception ex)
            {
                this.MostrarComentario(popupOK, lblmensOk, ex.Message);
            }
        }
        void cargarGrillaNroOperacionesGenerar()
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            try
            {
                grdAsignacionG.DataSource = blGestionarTransferencia.listarResponsableNro();
                grdAsignacionG.DataBind();
            }
            catch (Exception ex)
            {
                this.MostrarComentario(popupOK, lblmensOk, ex.Message);
            }
        }
        void cargarComboResponsable()
        {

            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            ASPxComboBox cbo = new ASPxComboBox();

            try
            {
                for (int i = 0; i < grdPrincipal.VisibleRowCount; i++)
                {
                    cbo = (ASPxComboBox)grdPrincipal.FindRowCellTemplateControl(i, null, "btnResponsable");
                    cbo.DataSource = blGestionarTransferencia.listarOperador();
                    cbo.ValueField = "matriculaOperador";
                    cbo.TextField = "nomOperador";
                    cbo.DataBind();
                }

            }
            catch (Exception ex)
            {
            }
        }



        protected void grdPrincipal_CellEditorInitialize(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewEditorEventArgs e)
        {
            //blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();

            //if (e.Column.FieldName == "matriculaOperador")
            //{
            //    ASPxComboBox cmb = e.Editor as ASPxComboBox;
            //    cmb.DataSource = blGestionarTransferencia.listarResponsable();
            //    cmb.ValueField = "matriculaOperador";
            //    cmb.ValueType = typeof(String);
            //    cmb.TextField = "nomOperador";
            //    cmb.DataBindItems();
            //}
        }



        protected void grdPrincipal_DataBinding(object sender, EventArgs e)
        {

        }


        protected void btnResponsable_Init(object sender, EventArgs e)
        {
            //blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();

            //ASPxComboBox cb = (ASPxComboBox)sender;

            //cb.DataSource = blGestionarTransferencia.listarOperador();
            //cb.ValueField = "matriculaOperador";
            //cb.TextField = "nomOperador";
            //cb.Items.Insert(0, new ListEditItem("[ASIGNAR]", ""));
            //cb.SelectedIndex = 0;
            //cb.DataBindItems();
              
        }

        protected void grdPrincipal_AfterPerformCallback(object sender, ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.cargarGrillaResponsable();
        }

        protected void btnAsignar_Click(object sender, EventArgs e)
        {
            this.actualizarTransaccion();
        }

        void actualizarTransaccion()
        {
            int count = 0;
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            try
            {
                for (int i = 0; i < grdPrincipal.VisibleRowCount; i++)
                {
                    ASPxCheckBox chkekedA = (ASPxCheckBox)grdPrincipal.FindRowCellTemplateControl(i, null, "chkAsignar");
                    if (chkekedA.Checked)
                    {count+=1;
                        ASPxComboBox chk = (ASPxComboBox)grdPrincipal.FindRowCellTemplateControl(i, grdPrincipal.Columns[4] as GridViewDataColumn, "btnResponsable");
                        string nroOperacion = grdPrincipal.GetRowValues(i, "nroOperacion").ToString();
                        string codigoCorresponsal = grdPrincipal.GetRowValues(i, "codigoCorresponsal").ToString();
                        string idcCliente = grdPrincipal.GetRowValues(i, "idcCliente").ToString();
                        string matriculaOperador = (string)chk.Value;
                        if (matriculaOperador!=string.Empty)
                        {
                           blGestionarTransferencia.actualizarOperador(nroOperacion, codigoCorresponsal, idcCliente, matriculaOperador,1); 
                        }
                        
                    }
                }

                this.cargarGrillaResponsable();
                this.cargarGrillaNroOperaciones();
                this.cargarGrillaNroOperacionesGenerar();
                this.cargarGrillaResponsableGenerar();
                this.cargarComboResponsable();
                if (count == 0)
                {
                    popupOK.ShowOnPageLoad = true;
                    lblmensOk.Text = "No se seleccione ningún registro de la grilla.";
                }
                else
                {
                    popupOK.ShowOnPageLoad = true;
                    lblmensOk.Text = "Se actualizaron los operadores de los registros seleccionados";
                }
            }
            catch (Exception)
            {
                string titulo = "Actualizando Operador de Transacción";
                string mensaje = Globales.msjSql;
                this.MostrarComentario(popupOK, lblmensOk, mensaje, titulo);
            }
        }


        private void MostrarComentario(ASPxPopupControl strPopup, ASPxLabel strLabel, String strMsg)
        {
            CargarAlert(strPopup, strLabel, strMsg, "Mensaje");
        }

        private void MostrarComentario(ASPxPopupControl strPopup, ASPxLabel strLabel, String strMsg, String strTitulo)
        {
            CargarAlert(strPopup, strLabel, strMsg, strTitulo);
        }

        private void CargarAlert(ASPxPopupControl strPopup, ASPxLabel strLabel, String strMsg, String strTitulo)
        {
            strPopup.HeaderText = strTitulo;
            strLabel.Text = strMsg;
            strPopup.ShowOnPageLoad = true;
        }

        protected void grdResponsable_AfterPerformCallback(object sender, ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.cargarGrillaNroOperaciones();
        }

        protected void btnSeleccionar_Click(object sender, EventArgs e)
        {
            if (estado)
            {
                estado = false;
                for (int i = 0; i < grdPrincipal.VisibleRowCount; i++)
                {
                    ASPxCheckBox chkekedA = (ASPxCheckBox)grdPrincipal.FindRowCellTemplateControl(i, null, "chkAsignar");
                    chkekedA.Checked = true;
                }
            }
            else
            {
                estado = true;
                for (int i = 0; i < grdPrincipal.VisibleRowCount; i++)
                {
                    ASPxCheckBox chkekedA = (ASPxCheckBox)grdPrincipal.FindRowCellTemplateControl(i, null, "chkAsignar");
                    chkekedA.Checked = false;
                }
            }
        }

        protected void btnAsignarXoper_Click(object sender, EventArgs e)
        {
            this.actualizarTransaccionXBloque();
        }

        void actualizarTransaccionXBloque()
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            try
            {
                for (int i = 0; i < grdPrincipal.VisibleRowCount; i++)
                {


                    ASPxCheckBox chkekedA = (ASPxCheckBox)grdPrincipal.FindRowCellTemplateControl(i, null, "chkAsignar");
                    if (chkekedA.Checked)
                    {
                        ASPxComboBox chk = (ASPxComboBox)grdPrincipal.FindRowCellTemplateControl(i, grdPrincipal.Columns[4] as GridViewDataColumn, "btnResponsable");
                        string nroOperacion = grdPrincipal.GetRowValues(i, "nroOperacion").ToString();
                        string codigoCorresponsal = grdPrincipal.GetRowValues(i, "codigoCorresponsal").ToString();
                        string idcCliente = grdPrincipal.GetRowValues(i, "idcCliente").ToString();
                        string matriculaOperador = (string)Session["operadorXbloque"];
                        blGestionarTransferencia.actualizarOperador(nroOperacion, codigoCorresponsal, idcCliente, matriculaOperador,1);

                    }
                }

                this.cargarGrillaResponsable();
                this.cargarGrillaNroOperaciones();

                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = "Se actualizaron los operadores de los registros seleccionados";

            }
            catch (Exception)
            {
                string titulo = "Actualizando Operador de Transacción";
                string mensaje = Globales.msjSql;
                this.MostrarComentario(popupOK, lblmensOk, mensaje, titulo);
            }
        }

        protected void cboAsignarOperador_SelectedIndexChanged(object sender, EventArgs e)
        {
            Session["operadorXbloque"] = cboAsignarOperador.Value;
        }

        protected void hplEditar_Click(object sender, EventArgs e)
        {
          //  popupGrilla.ShowOnPageLoad = true;

        }

        protected void grdPrincipal_FocusedRowChanged(object sender, EventArgs e)
        {
            //blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            //List<Globales.lista_TransferenciaReponsable> lista = new List<Globales.lista_TransferenciaReponsable>();
            //List<TB_Cuenta_Cliente> listaCuentaCliente = new List<TB_Cuenta_Cliente>();
            //string idOpcion1 = Convert.ToString(grdPrincipal.GetRowValues(grdPrincipal.FocusedRowIndex, "nroOperacion"));
            //string idccliente = Convert.ToString(grdPrincipal.GetRowValues(grdPrincipal.FocusedRowIndex, "idcCliente"));
            //if (idOpcion1 != string.Empty)
            //{
            //    lista = blGestionarTransferencia.listaVerificacion(idOpcion1);

            //    txtMonto.Text = lista[0].monto.ToString();
            //    txtNroOpe.Text = lista[0].nroOperacion;
            //    Session["supervisor"] = lista[0].nomSupervisor;
            //    Session["matriculaOperador"] = lista[0].matriculaOperador;
            //    Session["codCorresponsal"] = lista[0].codigoCorresponsal;
            //    listaCuentaCliente = blGestionarTransferencia.listaClientexID(lista[0].idcCliente);
            //    if (listaCuentaCliente.Count != 0)
            //    {

            //        ASPxComboBox1.Value = listaCuentaCliente[0].idcCliente;
            //    }
            //    txtNombre.Text = lista[0].nomCliente;
            //    txtBancoDestino.Text = lista[0].codigoBcoDestino;
            //    ASPxComboBox2.Value = lista[0].cuentaBeneficiario;
            //    txtCuentaBen.Text = lista[0].nomBeneficiario;
            //    txtDireccionBen.Text = lista[0].dirBeneficiario;
            //    cboTipo.Value = lista[0].tipoCargo;
            //    txtDetalle.Text = lista[0].detallePago;
            //    Session["infBcoBco"] = lista[0].infBcoBco;
            //    txtObservacion.Text = lista[0].observaciones;
            //    dteFechaValor.Date = lista[0].fecValor;
            //    Session["codBcoIntermediario"] = lista[0].codBcoIntermediario;
            //    Session["codBcoIntermediario1"] = lista[0].codBcoIntermediario1;
            //    Session["codBcoIntermediario2"] = lista[0].codBcoIntermediario2;
            //    cboMoneda.Value = lista[0].moneda;
            //    Session["idSupervisor"] = lista[0].matriculaSupervisor;
            //    Session["fecCreacion"] = lista[0].fecCreacion;
            //    blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            //    ASPxComboBox1.DataSource = blSolicitarTransferencia.listaClientexID(idccliente);
            //    ASPxComboBox1.TextField = "nroCuenta";
            //    ASPxComboBox1.ValueField = "idcCliente";
            //    ASPxComboBox1.DataBind();


            //    ASPxComboBox2.DataSource = blSolicitarTransferencia.listarBeneficiarioXCliente((string)ASPxComboBox1.Value);
            //    ASPxComboBox2.TextField = "cuentaBeneficiario";
            //    ASPxComboBox2.ValueField = "cuentaBeneficiario";
            //    ASPxComboBox2.DataBind();
            //    ASPxComboBox2.Items.Insert(0, new ListEditItem("[SELECCIONE]", ""));
            //    ASPxComboBox2.SelectedIndex = 0;
            }

        void cargarCuenta()
        {

            //try
            //{
            //    blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            //    cboCuenta.DataSource = blSolicitarTransferencia.listarClientes();
            //    cboCuenta.TextField = "nomCliente";
            //    cboCuenta.ValueField = "idcCliente";
            //    cboCuenta.DataBind();
            //    cboCuenta.Items.Insert(0, new ListEditItem("[SELECCIONE]", ""));
            //}
            //catch (Exception ex)
            //{
            //    strMsg = (ex.InnerException.Message == null) ? ex.Message : ex.InnerException.Message;
            //    popupOK.ShowOnPageLoad = true;
            //    lblmensOk.Text = strMsg;
            //}

        }

        void cargarCuentaCliente()
        {


            //try
            //{
            //    blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            //    cboCuenta.DataSource = blSolicitarTransferencia.listaClientexID((string)cboCuenta.Value);
            //    cboCuenta.TextField = "nroCuenta";
            //    cboCuenta.ValueField = "idcCliente";
            //    cboCuenta.DataBind();
            //    cboCuenta.Items.Insert(0, new ListEditItem("[SELECCIONE]", ""));
            //}
            //catch (Exception)
            //{
            //}

        }
        void cargarBeneficiario(string codigocliente)
        {

            //try
            //{
            //    blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            //    ASPxComboBox2.DataSource = blSolicitarTransferencia.listarBeneficiarioXCliente(codigocliente);
            //    ASPxComboBox2.TextField = "cuentaBeneficiario";
            //    ASPxComboBox2.ValueField = "cuentaBeneficiario";
            //    ASPxComboBox2.DataBind();
            //    ASPxComboBox2.Items.Insert(0, new ListEditItem("[SELECCIONE]", ""));
            //}
            //catch (Exception ex)
            //{
            //    strMsg = (ex.InnerException.Message == null) ? ex.Message : ex.InnerException.Message;
            //    popupOK.ShowOnPageLoad = true;
            //    lblmensOk.Text = strMsg;
            //}
        }

        void cargarBancoDestino()
        {
            //blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            //try
            //{
            //    cboBancoDestino.DataSource = blSolicitarTransferencia.listarBancoDes();
            //    cboBancoDestino.TextField = "nombreBcoDestibo";
            //    cboBancoDestino.ValueField = "codigoBcoDestino";
            //    cboBancoDestino.DataBind();
            //}
            //catch (Exception ex)
            //{
            //}
        }

        //protected void cboCuenta_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    this.cargarCuentaCliente();
        //    this.cargarBeneficiario((string)cboCuenta.Value);
        //}

        protected void popupGrilla_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.cargarCuentaCliente();
            }

        }

        protected void cboCuenta_Init(object sender, EventArgs e)
        {
            this.cargarCuenta();
        }

        protected void ASPxComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //this.cargarBeneficiario((string)ASPxComboBox1.Value);
            //txtNombre.Text = this.obtenerCliente(Convert.ToString(ASPxComboBox1.Value));
            //string idccliente = Convert.ToString(grdPrincipal.GetRowValues(grdPrincipal.FocusedRowIndex, "idcCliente"));

        }

        string obtenerCliente(string idcliente)
        {
            List<TB_Cliente> listaCliente = new List<TB_Cliente>();
            try
            {
                blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();

                listaCliente = blSolicitarTransferencia.getNombreCliente(idcliente);
            }
            catch (Exception ex)
            {

            }
            return listaCliente[0].nomCliente;
        }

        protected void btnActualizarTrans_Click(object sender, EventArgs e)
        {
            // blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            //TB_Transferencia objTransaccion = new TB_Transferencia();
            //try
            //{string idOpcion1 = Convert.ToString(grdPrincipal.GetRowValues(grdPrincipal.FocusedRowIndex, "nroOperacion"));
            //    string idccliente = Convert.ToString(grdPrincipal.GetRowValues(grdPrincipal.FocusedRowIndex, "idcCliente"));
            //    objTransaccion.nroOperacion = idOpcion1;
            //    objTransaccion.codigoBcoDestino = txtBancoDestino.Text;
            //    objTransaccion.fecCreacion = Session["fecCreacion"] == null ? System.DateTime.Now : (DateTime)Session["fecCreacion"];
            //    objTransaccion.fecValor = dteFechaValor.Date;
            //    objTransaccion.moneda = (string)cboMoneda.Value;
            //    objTransaccion.monto = Convert.ToDecimal(txtMonto.Text);
            //    objTransaccion.idcCliente = idccliente;
            //    objTransaccion.codBcoIntermediario = Session["codBcoIntermediario"] == null ? null : (string)Session["codBcoIntermediario"];
            //    objTransaccion.codBcoIntermediario1 = Session["codBcoIntermediario1"] == null ? null : (string)Session["codBcoIntermediario1"];
            //    objTransaccion.codBcoIntermediario2 = Session["codBcoIntermediario2"] == null ? null : (string)Session["codBcoIntermediario2"];
            //    objTransaccion.detallePago = txtDetalle.Text == string.Empty ? null : txtDetalle.Text;
            //    objTransaccion.infBcoBco = Session["infBcoBco"] == null ? null : (string)Session["infBcoBco"];
            //    objTransaccion.observaciones = txtObservacion.Text == string.Empty ? null : txtObservacion.Text;
            //    objTransaccion.estado = "VERIFICADA";
            //    objTransaccion.comisiones = null;
            //    objTransaccion.textoDuplicidad = "";
            //    objTransaccion.codigoCorresponsal = (string)Session["codCorresponsal"];
            //    objTransaccion.codigoOFAC = null;
            //    objTransaccion.matriculaOperador = (string)Session["matriculaOperador"];
            //    objTransaccion.tipoCargo = (string)cboTipo.Value;
            //    objTransaccion.cuentaBeneficiario = (string)ASPxComboBox2.Text;

            //    if (blGestionarTransferencia.modificar(objTransaccion))
            //    {
            //        string titulo = "Mensaje";
            //        string mensaje = "Se actualizo correctamente la transacción.";
            //        this.MostrarComentario(popupOK, lblmensOk, mensaje, titulo);
            //    }
            //    else
            //    {
            //        string titulo = "Mensaje";
            //        string mensaje = "Error al actualizar la transacción..";
            //        this.MostrarComentario(popupOK, lblmensOk, mensaje, titulo);
            //    }

            //    this.cargarGrillaResponsable();
            //    this.cargarGrillaNroOperaciones();
            //    //popupOK.ShowOnPageLoad = true;
            //    //lblmensOk.Text = "Se actualizaron los operadores de los registros seleccionados";
            //}
            //catch (Exception ex)
            //{
            //}
        }

        protected void ASPxComboBox1_ValueChanged(object sender, EventArgs e)
        {
            //Session["id_combo"] = (Int32)ASPxComboBox1.SelectedIndex;
        }

        protected void cboResponsableG_Init(object sender, EventArgs e)
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();

            ASPxComboBox cb = (ASPxComboBox)sender;

            cb.DataSource = blGestionarTransferencia.listarOperador();
            cb.ValueField = "matriculaOperador";
            cb.TextField = "nomOperador";
            cb.DataBindItems();
        
        }

        protected void grdResponsableG_AfterPerformCallback(object sender, ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.cargarGrillaResponsableGenerar();
            
        }


        //[System.Web.Script.Services.ScriptMethod()]
        //[System.Web.Services.WebMethod]
        //public static List<string> GetCountries()
        //{
        //    IFacadeSolicitarTrasnferencia blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
        //// IFacadeGestionarTransferencia blGestionarTransferencia=new FacadeGestionarTransferencia_Imp();
        ////IFacadeActualizarBeneficiario blActualizarTransferencia=new FacadeActualizarTransferencia();
        //    List<TB_BcoDestino> lista = new List<TB_BcoDestino>();
        //    lista = blSolicitarTransferencia.listarBancoDes();
        //    List<string> CountryNames = new List<string>();
        //    for (int i = 0; i < lista.Count; i++)
        //    {
        //        CountryNames.Add(lista[i].codigoBcoDestino);
        //    }
        //    return CountryNames;
        //}
        protected void grdAsignacionG_AfterPerformCallback(object sender, ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.cargarGrillaNroOperacionesGenerar();
        }

        protected void btnBuscarCliente_Click(object sender, EventArgs e)
        {

        }
        void cargarComboCuentaBenef(string cliente)
        {
            blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();

            try
            {
                ASPxComboBox3.DataSource = blSolicitarTransferencia.listarBeneficiarioXCliente(cliente);
                ASPxComboBox3.TextField = "nomBeneficiario";
                ASPxComboBox3.ValueField = "cuentaBeneficiario";
                ASPxComboBox3.DataBind();
              //  ASPxComboBox3.Items.Insert(0, new ListEditItem("[SELECCIONE]", ""));
            }
            catch (Exception)
            {

            }
        }
        void InsertarTransaccion()
        {
            blSolicitarTransferencia= new FacadeSolicitarTransferencia_Imp();
            try
            {
                TB_Transferencia objTransferencia = new TB_Transferencia();

                objTransferencia.nroOperacion=blSolicitarTransferencia.ObtenerNroOpercionMaxC();
                Session["nroTransaccion"] = objTransferencia.nroOperacion;
                objTransferencia.codigoBcoDestino=txtCodigoSWIFTG.Text;
                objTransferencia.fecCreacion=System.DateTime.Now;
                objTransferencia.fecValor = System.DateTime.Now;
                objTransferencia.moneda=(string)cboMonedaG.Value;
                objTransferencia.monto=Convert.ToDecimal(txtMontoG.Text);
                objTransferencia.idcCliente=txtCliente.Text;
                objTransferencia.codBcoIntermediario=null;
                objTransferencia.detallePago=null;
                objTransferencia.infBcoBco="";
                objTransferencia.observaciones=txtObservacionesG.Text;
                objTransferencia.estado = "INGRESADAS";
                objTransferencia.comisiones = null;
                objTransferencia.textoDuplicidad = "";
                objTransferencia.codigoCorresponsal = this.obtenerIDCorresponsal(txtCodigoSWIFTG.Text);
                objTransferencia.codigoOFAC = null;
                objTransferencia.matriculaOperador = (string)cboResponsableG.Value;
                objTransferencia.tipoCargo = "SHA";
                objTransferencia.matriculaSupervisor = this.obtenerIdSupervisor((string)cboResponsableG.Value);
                objTransferencia.cuentaBeneficiario = (string)ASPxComboBox3.Value;

                if (blSolicitarTransferencia.InsertarTransaccion(objTransferencia))
                {
                    this.newTransaccion();
                    lblmensOk.Text = "Se registro Correctamente la Transacción";
                    popupOK.ShowOnPageLoad = true;
                    
                }
                
            }
            catch (Exception ex)
            {
                strTitulo = "Transacción";
                strMsg =  ex.Message;
                lblmensOk.Text = strMsg;
                popupOK.ShowOnPageLoad = true;
            }
            this.cargarGrillaClienteCuenta();
            this.cargarGrillaNroOperaciones();
            this.cargarGrillaResponsable();
            this.cargarGrillaResponsableGenerar();
        }
        string obtenerIdSupervisor(string idOperador)
        {
            blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            List<TB_Operador> lista = new List<TB_Operador>();

            try
            {
                lista = blSolicitarTransferencia.getIdSupervisor(idOperador);

            }
            catch (Exception)
            {
                return null;
            }
            return lista[0].matriculaSupervisor;
        }
        string obtenerIDCorresponsal(string id)
        {
            blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            List<TB_BcoDestino> lista = new List<TB_BcoDestino>();
            string codigocorresponsal = "";
            try
            {
                lista = blSolicitarTransferencia.getCodigoCorresponsal(id);

                codigocorresponsal = lista[0].codigoCorresponsal;
            }
            catch (Exception)
            {

            }
            return codigocorresponsal;
        }
        void newTransaccion()
        {
            txtCodigoSWIFTG.Text = string.Empty;
            txtCuentaG.Text = string.Empty;
            txtFiltro.Text = string.Empty;
            txtMontoG.Text = string.Empty;
            txtObservacionesG.Text = string.Empty;
            txtOrdNomG.Text = string.Empty;
            cboAsignarOperador.SelectedIndex = 0;
            cboMonedaG.SelectedIndex = 0;

                     }

        protected void grdListaCuentaCliente_FocusedRowChanged(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                return;
            }
           
            string cuenta = Convert.ToString(grdListaCuentaCliente.GetRowValues(grdListaCuentaCliente.FocusedRowIndex, "nroCuenta"));
            string cliente = Convert.ToString(grdListaCuentaCliente.GetRowValues(grdListaCuentaCliente.FocusedRowIndex, "nomCliente"));
            string idccliente = Convert.ToString(grdListaCuentaCliente.GetRowValues(grdListaCuentaCliente.FocusedRowIndex, "idcCliente"));

            txtCliente.Text = idccliente;
            txtCuentaG.Text = cuenta;
            txtOrdNomG.Text = cliente;
        }


        void cargarGrillaClienteCuenta()
        {
            blActualizarTransferencia = new FacadeActualizarTransferencia();
            try
            {
                grdListaCuentaCliente.DataSource = blActualizarTransferencia.listarCuentaCuentaClientesActivas();
                grdListaCuentaCliente.DataBind();
            }
            catch (Exception ex)
            {
                popupOK.HeaderText = "Cargar Grilla Cuenta Cliente";
                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = ex.Message;
            }
        }
        void cargarGrillaClienteCuentaFiltro(string idccliente)
        {
            blActualizarTransferencia = new FacadeActualizarTransferencia();
            try
            {
                grdListaCuentaCliente.DataSource = blActualizarTransferencia.listarCuentaCuentaClientesActivasFiltro(idccliente);
                grdListaCuentaCliente.DataBind();
            }
            catch (Exception ex)
            {
                popupOK.HeaderText = "Cargar Grilla Cuenta Cliente";
                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = ex.Message;
            }
        }
        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            this.cargarGrillaClienteCuentaFiltro(txtFiltro.Text);
        }

        protected void btnGenerarTrans_Click(object sender, EventArgs e)
        {
           
            if (this.validarCodigoSwift())
            {
                blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
                lblGenerarTransaccion.Text = "Desea generar la transferencia numero " + blSolicitarTransferencia.ObtenerNroOpercionMaxC();
                popupConfirmarTrans.ShowOnPageLoad = true;
            }
            //else
            //{
            //    popupOK.HeaderText = "Mensaje";
            //    popupOK.ShowOnPageLoad = true;
            //    lblmensOk.Text = "No existe código Swift";
            //}
        }

        protected void bntGenerarTransaccion_Click(object sender, EventArgs e)
        {
                 this.InsertarTransaccion();
        }
        private bool validarCodigoSwift()
        {
            blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            try
            {
                string codigo = txtCodigoSWIFTG.Text;

                List<TB_BcoDestino> listaBanco = new List<TB_BcoDestino>();

                listaBanco = blSolicitarTransferencia.getCodigoCorresponsal(codigo);
                if (listaBanco.Count == 0)
                {
                    string msg = "Código Swift Incorrecto";
                    string titulo = "Mensaje";
                    popupOK.HeaderText = "Validación";
                    popupOK.ShowOnPageLoad = true;
                    lblmensOk.Text = msg;
                    return false;
                }
                else
                {
                    return true;
                }
            

            }
            catch (Exception ex)
            {
            
                strMsg = ex.Message;
                popupOK.HeaderText = "Mensaje";
                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = "Error al validar código Swift";
                return false;
            }
        }
        protected void popupBuscarCuenta_Unload(object sender, EventArgs e)
        {
            this.cargarGrillaClienteCuenta();
        }

        protected void btnCancelarTrans_Click(object sender, EventArgs e)
        {
            this.limpiarControles();
        }
        void limpiarControles()
        {
            txtCuentaG.Text = string.Empty;
            txtOrdNomG.Text = string.Empty;
            cboMonedaG.SelectedIndex = 0;
            txtMontoG.Text = string.Empty;
            txtCodigoSWIFTG.Text = string.Empty;
            cboResponsableG.SelectedIndex = 0;
            txtObservacionesG.Text = string.Empty;
            txtCliente.Text = string.Empty;
        }

        private void cargarGrillaBusqueda()
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            string sql = this.BuscarTransacciones();
            grdConsultar.DataSource = blGestionarTransferencia.BuscarTransferencias(sql);
            grdConsultar.DataBind();
        }
        private string BuscarTransacciones()
        {
            string sql = "";
             //sql += "select * from tb_transferencia tb";
            sql += "select tb.nroOperacion,tb.codigoCorresponsal,tb.moneda,tb.monto,tb.estado from tb_transferencia tb";
            sql += " where (tb.fecCreacion between  '"+dteDesde.Date.ToString("yyyy-MM-dd")+"' and '"+dteHasta.Date.ToString("yyyy-MM-dd")+"')";
            sql += " and tb.moneda='"+(string)cboMonedaCons.Value+"'";
            sql += " and tb.monto between  "+txtDesde.Text+" and "+txtHasta.Text;
            sql += " and tb.estado='"+(string)cboestadoConsu.Value+"'";
            if (cboResonsableCon.SelectedIndex==0)
            {
                sql += " and tb.matriculaOperador in (select tbo.matriculaOperador from TB_Operador tbo)";
            }
            else
            {
                sql += " and tb.matriculaOperador="+"'"+(string)cboResonsableCon.Value+"'";
            }
            if (cboSupervisorCon.SelectedIndex == 0)
            {
                sql += " and tb.matriculaSupervisor in (select tbps.matriculaSupervisor from TB_Supervisor tbps)";
            }
            else
            {
                sql += " and tb.matriculaSupervisor=" + "'" + (string)cboSupervisorCon.Value + "'";
            } if (txtNroOperacionCons.Text!=string.Empty)
            {
                sql += " and tb.nroOperacion ='"+txtNroOperacionCons.Text+"'";
            }
            if (txtIdcClienteCon.Text!=string.Empty)
            {
                sql += " and tb.idcCliente='"+txtIdcClienteCon.Text+"'";
            }
            if (txtTextoCon.Text!=string.Empty)
            {
                sql += " and tb.detallePago like '%'+'"+txtTextoCon.Text+"'+'%'";
            }
            

            return sql;
        }
        protected void btnBuscarCon_Click(object sender, EventArgs e)
        {
            this.cargarGrillaBusqueda();
        }

        protected void WriteToResponse(string fileName, bool saveAsFile, string fileFormat, MemoryStream stream)
        {
            if (Page == null || Page.Response == null) return;
            string disposition = saveAsFile ? "attachment" : "inline";
            Page.Response.Clear();
            Page.Response.Buffer = false;
            Page.Response.AppendHeader("Content-Type", string.Format("application/{0}", fileFormat));
            Page.Response.AppendHeader("Content-Transfer-Encoding", "binary");
            Page.Response.AppendHeader("Content-Disposition", string.Format("{0}; filename={1}.{2}", disposition, HttpUtility.UrlEncode(fileName).Replace("+", "%20"), fileFormat));
            if (stream.Length > 0)
                Page.Response.BinaryWrite(stream.ToArray());
            //Page.Response.End();
        }
        protected void btnCancelarCan_Click(object sender, EventArgs e)
        {
            cboResonsableCon.SelectedIndex = 0;
            txtTextoCon.Text = string.Empty;
            txtIdcClienteCon.Text = string.Empty;
            txtNroOperacionCons.Text = string.Empty;
            dteDesde.Text = string.Empty;
            dteHasta.Text = string.Empty;
            cboMonedaCons.SelectedIndex = 0;
            txtDesde.Text = string.Empty;
            txtHasta.Text = string.Empty;
            cboSupervisorCon.SelectedIndex = 0;
            cboResonsableCon.SelectedIndex = 0;
        }

        protected void btnExportar_Click(object sender, EventArgs e)
        {
            Session["reporte_id"] = "E";
            if (grdConsultar.VisibleRowCount==0)
            {
                popupOK.HeaderText = "Mensaje";
                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = "No existe ningun registro en la grilla.";
                return;
            }
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            string sql = this.BuscarTransacciones();
        
        
            DataTable dtTemp = new DataTable();
            dtTemp.Columns.Add("nroOperacion");
            dtTemp.Columns.Add("codigoCorresponsal");
            dtTemp.Columns.Add("moneda");
            dtTemp.Columns.Add("monto");
            dtTemp.Columns.Add("estado");
         
            DataRow drAddItem;
            for (int i = 0; i < grdConsultar.VisibleRowCount; i++)
            {
                drAddItem = dtTemp.NewRow();
                //string nroOperacion = grdConsultar.GetRowValues(i, "nroOperacion").ToString();
                
                drAddItem[0] = grdConsultar.GetRowValues(i, "nroOperacion").ToString();
                drAddItem[1] = grdConsultar.GetRowValues(i, "codigoCorresponsal").ToString();
                drAddItem[2] = grdConsultar.GetRowValues(i, "moneda").ToString();
                drAddItem[3] = grdConsultar.GetRowValues(i, "monto").ToString();
                drAddItem[4] = grdConsultar.GetRowValues(i, "estado").ToString();
                dtTemp.Rows.Add(drAddItem);
            }

            //Temp Grid
            System.Web.UI.WebControls.DataGrid dg = new System.Web.UI.WebControls.DataGrid();
            dg.DataSource = dtTemp;
            dg.DataBind();
            ExportToExcel("BudgeReport.xls", dg);
            grdConsultar = null;
            grdConsultar.Dispose();
       }

        private void ExportToExcel(string strFileName, System.Web.UI.WebControls.DataGrid dg)
        {
           
            Response.ClearContent();
            Response.AddHeader("content-disposition", "attachment; filename=" + strFileName);
            Response.ContentType = "application/excel";
            System.IO.StringWriter sw = new System.IO.StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            dg.RenderControl(htw);
            //grdConsultar.RenderControl(htw);
            Response.Write(sw.ToString());
            Response.End();
        }

        

        protected void bntImprimir_Click(object sender, EventArgs e)
        {
            if (grdConsultar.VisibleRowCount == 0)
            {
                popupOK.HeaderText = "Mensaje";
                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = "No existe ningun registro en la grilla.";
                return;
            }
            string sql= this.BuscarTransacciones();
            Session["id_reporte"] = sql;
            string newruta = "ReporteView.aspx";
            ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", "var Mleft = (screen.width/2)-(760/2);var Mtop = (screen.height/2)-(700/2);window.open( 'ReporteView.aspx', '_blank', 'height=700,width=760,status=yes,toolbar=yes,scrollbars=yes,resizable=1,menubar=no,location=no,top=\'+Mtop+\', left=\'+Mleft+\'' );", true);
        }

        protected void ASPxPageControl1_ActiveTabChanged(object source, DevExpress.Web.ASPxTabControl.TabControlEventArgs e)
        {

        }

        protected void btnAsignarXoper0_Click(object sender, EventArgs e)
        {
            string adc = txtCliente.Text == string.Empty ? "" : txtCliente.Text;
            this.cargarComboCuentaBenef(adc);
        }
    }
}